#include<stdio.h>
#define MAXSIZE 10000
int a[MAXSIZE];//用于对集合中的每一个数进行计数
 

 /*
    这段代码的主要功能是从一个文件中读取一组整数，然后找出这组整数中出现次数最多的数（众数）以及出现的次数（重数）。

    1. 首先，定义了一个数组a，大小为MAXSIZE（10000），用于存储每个整数出现的次数。

    2. 在main函数中，定义了几个变量：s用于存储从文件中读取的整数，z和t分别用于存储众数和重数，len用于存储数组的长度。

    3. 使用freopen函数打开两个文件，一个是输入文件"./data/input.txt"，另一个是输出文件"./data/output.txt"。这样，程序可以从输入文件中读取数据，并将结果写入输出文件。

    4. 使用scanf函数从输入文件中读取一个整数，赋值给len，表示数组的长度。

    5. 使用for循环，从输入文件中读取len个整数，并存储在数组a中。每次读取一个整数，就在数组a中对应的位置上加1，表示该整数出现的次数增加1。

    6. 使用另一个for循环，遍历数组a，找出出现次数最多的整数（众数）和其出现的次数（重数）。如果当前整数的出现次数大于t，就更新t和z的值。

    7. 最后，使用printf函数将众数和重数输出到输出文件中。

    8. main函数返回0，表示程序正常结束。
*/


/*
  stdin stdout是标准的输入输出流，一般与键盘和鼠标连接，但是也可以通过freopen将文件来转换为stdin 和 stdout

  scanf是获取stdin的数据，printf是输出stdout的数据
*/
int main()
{
    int s;
    int z=0,t=0;//记录众数和重数 
    int len;
    int i;
    
    // 将文件的输入作为输入流
    freopen("./data/input.txt","r",stdin);

    //将输出流输入到文件中
    freopen("./output/output.txt","w",stdout);
    scanf("%d",&len);//从文件中得到该数组的长度 
    
    // 类似直方图的统计，通过统计来输入的次数
    for(i=0;i<len;i++) 
    {
        scanf("%d",&s); 
        a[s]++;//记录每次该数出现的次数 
    }
 
    
    for(i=0;i<MAXSIZE;i++)//找出最大的重数 
    {
        if(a[i]>t)
        {
            t=a[i]; 
            z=i; //找到众数 
        }
    }
    
    // 将z 和 t 输出stdout
    printf("%d\n",z);
    printf("%d\n",t);
    return 0;
}

// 标准的输入输出流，将设备还上输入的数据传输给内存，将内存的数据传输给设备
// int main(int argc,char * argv[])
// {

//     int a;

//     float b;

//     scanf("%d %f",&a,&b);

//     printf("a+b = %f \n",a+b);

//     return 0;
// }